package fr.afcepf.hotels.soa.entity;

import javax.persistence.*;

import java.io.Serializable;
import java.util.List;


/**
 * The persistent class for the voiture database table.
 * 
 */
@Entity
@Table(name="voiture")
public class Voiture implements Comparable<Voiture> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@Column(unique=true, nullable=false, length=10)
	private String idImmatriculation;

	@Column(nullable=false)
	private int idHotel;

	@Lob
	private String lienImage;

	@Column(nullable=false, length=100)
	private String marque;

	@Column(nullable=false, length=100)
	private String modele;

	@Column(nullable=false)
	private int nbPlaces;

	@Column(nullable=false)
	private int nbPortes;

	//bi-directional many-to-one association to CategorieVoiture
	@ManyToOne
	@JoinColumn(name="idCategorie", nullable=false)
	private CategorieVoiture categorievoiture;

	//bi-directional many-to-many association to ReservationVoiture
	@ManyToMany
	@JoinTable(
			name="voiture_reservation"
			, joinColumns={
					@JoinColumn(name="idImmatriculation", nullable=false)
			}
			, inverseJoinColumns={
					@JoinColumn(name="idReservationVoiture", nullable=false)
			}
			)
	private List<ReservationVoiture> reservationvoitures;

	public Voiture() {
	}

	public String getIdImmatriculation() {
		return this.idImmatriculation;
	}

	public void setIdImmatriculation(String idImmatriculation) {
		this.idImmatriculation = idImmatriculation;
	}

	public int getIdHotel() {
		return this.idHotel;
	}

	public void setIdHotel(int idHotel) {
		this.idHotel = idHotel;
	}

	public String getLienImage() {
		return this.lienImage;
	}

	public void setLienImage(String lienImage) {
		this.lienImage = lienImage;
	}

	public String getMarque() {
		return this.marque;
	}

	public void setMarque(String marque) {
		this.marque = marque;
	}

	public String getModele() {
		return this.modele;
	}

	public void setModele(String modele) {
		this.modele = modele;
	}

	public int getNbPlaces() {
		return this.nbPlaces;
	}

	public void setNbPlaces(int nbPlaces) {
		this.nbPlaces = nbPlaces;
	}

	public int getNbPortes() {
		return this.nbPortes;
	}

	public void setNbPortes(int nbPortes) {
		this.nbPortes = nbPortes;
	}

	public CategorieVoiture getCategorievoiture() {
		return this.categorievoiture;
	}

	public void setCategorievoiture(CategorieVoiture categorievoiture) {
		this.categorievoiture = categorievoiture;
	}

	public List<ReservationVoiture> getReservationvoitures() {
		return this.reservationvoitures;
	}

	public void setReservationvoitures(List<ReservationVoiture> reservationvoitures) {
		this.reservationvoitures = reservationvoitures;
	}

	public Voiture(String idImmatriculation, int idHotel, String lienImage,
			String marque, String modele, int nbPlaces, int nbPortes,
			CategorieVoiture categorievoiture,
			List<ReservationVoiture> reservationvoitures) {
		super();
		this.idImmatriculation = idImmatriculation;
		this.idHotel = idHotel;
		this.lienImage = lienImage;
		this.marque = marque;
		this.modele = modele;
		this.nbPlaces = nbPlaces;
		this.nbPortes = nbPortes;
		this.categorievoiture = categorievoiture;
		this.reservationvoitures = reservationvoitures;
	}

	@Override
	public int compareTo (Voiture v) {

		if(this.categorievoiture.getPrixJournalier()>v.getCategorievoiture().getPrixJournalier()){
			return 1;
		}else{
			return -1;
		}
		
	}


}